<?php

class Solicitudes_InfoprogramaController extends Zend_Controller_Action
{
	private $estructuraTabBoton;
	private $nav;
	private $infoPrograma;
	private $tabActual;
	private $botonHorizontalActual;
	private $botonVerticalActual;
	private $opcion;
	private $datos;
	private $parametros;
	private $codproceso;
	private $codestado;
	
	private $_readonly;
	
    public function init() {
        $sesionPrograma = new Zend_Session_Namespace("PROGRAMA");
		$this->codprograma = $sesionPrograma->codprograma;
		$this->codproceso = $sesionPrograma->codproceso;
		$Programa = new Solicitudes_Model_DetalleSolicitud();
		$this->view->infoPrograma = $Programa->cargardatosPrograma($this->codprograma);
//		$this->view->infoPrograma["vigencia"] = $Programa->getVigenciaResolucion($this->codprograma,2);
//		if (!$this->view->infoPrograma["vigencia"]){
		    $this->view->infoPrograma["vigencia"] = $Programa->getVigenciaResolucion($this->codprograma,3);
//		}
        
		$Sintesis  = new Solicitudes_Model_DetalleSolicitud();
				
		$codtab = $this->_getParam("codtab","1");
        $codboton = $this->_getParam("codboton","1");
        $codboton2 = $this->_getParam("codboton2","1");
        $this->opcion=$codtab."_".$codboton."_".$codboton2;
        $this->datos["codtab"]=$codtab;
        $this->datos["codboton"]=$codboton;
        $this->datos["codboton2"]=$codboton2;
        
   		$this->codestado =  $Programa->getEstadoProceso($this->codproceso);
    	$this->_readonly = false;
		if (Solicitudes_Model_Historicoprocesos::CONDICIONES_INICIALES != $this->codestado){
		    if ($this->codestado!=Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION){
			    $this->_readonly = true;
		    }
			$this->_helper->layout()->setLayout("popup");

			if ($this->codestado < Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION){
			    $this->codestado = Solicitudes_Model_Historicoprocesos::CONDICIONES_INICIALES;
		    }elseif($this->codestado > Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION){
			    $this->codestado = Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION;
		    }
		    
//			$datos = $Sintesis->cargarSintesis($this->opcion,$this->codproceso,$this->codestado);
//
//			if (!$datos && !in_array($this->opcion,array("3_3_1")) && App_User::getCodigoPadreRol()==Roles_Model_Roles::CODPADRE_IES){
//			    $Sintesis->CopiarDatosProceso($this->codproceso);
//			}
		}
        
        $this->parametros = array("codtab"=>$codtab,"codboton"=>$codboton,"codboton2"=>$codboton2);

        $this->tabActual=$codtab;
		$this->botonHorizontalActual=$codboton;
		$this->botonVerticalActual=$codboton2;
    	
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
   	
    	$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
		$this->nav->agregar_navegacion("Información de la solicitud :: {$sesionSolicitud->codsolicitud}", "/solicitudes/detalle/basica","Información de la solicitud");
        $this->nav->agregar_navegacion("Información del programa","","");
		$this->view->nav = $this->nav;
		
		$this->view->title = App_User::getNombreInstitucion();
		
		$ValoresDominios= new Generales_Model_ValoresDominios();
		$estructuraInformacion = $ValoresDominios->cargarDatos("INFORMACION_PROGRAMAS");
		
        for ($index = 0; $index < count($estructuraInformacion); $index++) {
			if($estructuraInformacion[$index]["codpadre"]==null) {
			    $estructuraInformacion[$index]["completo"]=$Sintesis->isCompleto($this->codproceso, $this->codestado, $estructuraInformacion[$index]["codigo"]);
			    if($codtab == $estructuraInformacion[$index]["codigo"]) {
			        for ($k = 0; $k < count($estructuraInformacion); $k++) {
			        	if($estructuraInformacion[$k]["codpadre"] == $estructuraInformacion[$index]["codvalordominio"]) {
			        	    $estructuraInformacion[$k]["completo"]=false;
			        	    if($estructuraInformacion[$index]["completo"]) {
			        	        $estructuraInformacion[$k]["completo"]=true;
			        	    } else {
			        	        $temp_codigo = "{$codtab}_{$estructuraInformacion[$k]["codigo"]}";
			        	        $estructuraInformacion[$k]["completo"]=$Sintesis->isCompleto($this->codproceso, $this->codestado, $temp_codigo);
			        	    }
			        	}
			        	if($codboton == $estructuraInformacion[$k]["codigo"] && $estructuraInformacion[$k]["codpadre"] == $estructuraInformacion[$index]["codvalordominio"]) {
			        	    for ($j = 0; $j < count($estructuraInformacion); $j++) {
			        	        if($estructuraInformacion[$j]["codpadre"] == $estructuraInformacion[$k]["codvalordominio"]) {
			        	            $estructuraInformacion[$j]["completo"]=false;
				        	        if($estructuraInformacion[$k]["completo"]) {
					        	        $estructuraInformacion[$j]["completo"]=true;
					        	    } else {
					        	        $temp_codigo = "{$codtab}_{$estructuraInformacion[$k]["codigo"]}_{$estructuraInformacion[$j]["codigo"]}";
					        	        $estructuraInformacion[$j]["completo"]=$Sintesis->isCompleto($this->codproceso, $this->codestado, $temp_codigo);
					        	    }
			        	        }
			        	    }
			        	}
			        }
			    }

			}
		}
		
		$this->estructuraTabBoton = new App_Util_EstructuraTabBoton($estructuraInformacion,"/solicitudes/infoprograma/index/",$this->parametros);
		$this->view->tabs =  $this->estructuraTabBoton->getTabs();
		$this->view->botonesHorizontales = $this->estructuraTabBoton->getBotonHorizontal($codtab);
		$this->view->botonesVerticales = $this->estructuraTabBoton->getBotonVertical($codboton);
		
    }

    public function indexAction() {
       $Sintesis  = new Solicitudes_Model_DetalleSolicitud();
       $datos     = $Sintesis->cargarSintesis($this->opcion,$this->codproceso,$this->codestado);
       $datos["codtab"]=$this->datos["codtab"];
       $datos["codboton"]=$this->datos["codboton"];
       $datos["codboton2"]=$this->datos["codboton2"];
       
//       Zend_Debug::dump($this->opcion);
       
       switch($this->opcion){
           case "3_1_1":
               $datos_docentes = $Sintesis->buscarDocentes($this->codproceso,$this->codestado);
               if ($datos_docentes){
                   $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
                   $datos_docentes["periodo"]= $datos_docentes["periodo_1_1"];


	               if ($datos_docentes["ano_1_1"]==$datos_docentes["ano_1_2"]){
		               $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
		               $datos_docentes["periodo"]= $datos_docentes["periodo_1_2"];
	               }
               }
               $datos_docentes["codtab"] = $this->datos["codtab"];
	           $datos_docentes["codboton"] = $this->datos["codboton"];
			   $datos_docentes["codboton2"] = $this->datos["codboton2"];
			   
			   $errordocentes = $this->_getParam("errordocentes");
			   
               $form_docentes = new Solicitudes_Form_Docentes();
               if ($errordocentes){
                   $form_docentes->recoverFromRedirect();
               }
               $form_docentes->populate ( $datos_docentes );
               $form_docentes->makeStatic($this->_readonly);
               $this->view->form_docentes=$form_docentes;
               
               $coddocentevisita = $this->_getParam("coddocentevisita");
               if (!empty($coddocentevisita)){
                   $datos_docentesv= $Sintesis->buscarDocenteVisita($coddocentevisita);
               }
               $datos_docentesv["codtab"] = $this->datos["codtab"];
	           $datos_docentesv["codboton"] = $this->datos["codboton"];
			   $datos_docentesv["codboton2"] = $this->datos["codboton2"];
                
			   $errordocentesvisita = $this->_getParam("errordocentesvisita");
               $form_docentesvisita = new Solicitudes_Form_Docentesvisita();
               if ($errordocentesvisita){
                   $form_docentesvisita->recoverFromRedirect();
               }
               $form_docentesvisita->populate ( $datos_docentesv );
               $form_docentesvisita->makeStatic($this->_readonly);
               $this->view->form_docentesvisita = $form_docentesvisita;
               
               $this->view->docentesvisita = $Sintesis->buscarDocentesVisita($this->codproceso,$this->codestado);
           break;
           case "3_2_1":
               $datos_estudiantes = $Sintesis->buscarEstudiantes($this->codproceso,$this->codestado);
//               Zend_Debug::dump($datos_estudiantes);
               $datos_estudiantes["ano"]= 0;
               $datos_estudiantes["periodo"]= 0;
               
               if (isset($datos_estudiantes["ano_1_1"])){
                   $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
                   $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_1"];
               }
               
               if (isset($datos_estudiantes["ano_1_1"]) && $datos_estudiantes["ano_1_1"]==$datos_estudiantes["ano_1_2"]){
	               $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
	               $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_2"];
               }
               
               $datos_estudiantes["codtab"] = $this->datos["codtab"];
	           $datos_estudiantes["codboton"] = $this->datos["codboton"];
			   $datos_estudiantes["codboton2"] = $this->datos["codboton2"];
			   
               $form_estudiantes = new Solicitudes_Form_Estudiantes();
               $errorestudiantes = $this->_getParam("errorestudiantes");
               if ($errorestudiantes){
                   $form_estudiantes->recoverFromRedirect();
               }
               $form_estudiantes->populate ( $datos_estudiantes );
               $form_estudiantes->makeStatic($this->_readonly);
               $this->view->form_estudiantes=$form_estudiantes;

               
               $codcohorte = $this->_getParam("codcohorte");
               if (!empty($codcohorte)){
                   $datos_cohortes= $Sintesis->buscarCohorte($codcohorte);
               }else {
                   $numero_cohorte = $Sintesis->buscarNumeroCohorte($this->codproceso,$this->codestado);
                   $datos_cohortes["numero"]= $numero_cohorte+1;
               }
                              
               
               $datos_cohortes["codtab"] = $this->datos["codtab"];
	           $datos_cohortes["codboton"] = $this->datos["codboton"];
			   $datos_cohortes["codboton2"] = $this->datos["codboton2"];
			   
			   $datos_proceso =  $Sintesis->cargardatosProceso($this->codproceso);
			   
               $form_cohortes = new Solicitudes_Form_Cohortes();
               $errorcohortes = $this->_getParam("errorcohortes");
               if ($errorcohortes){
                   $form_cohortes->recoverFromRedirect();
               }
               $form_cohortes->populate ( $datos_cohortes );
			   if (!empty($datos_proceso["fechaiactividades"])){
        		   $appConfig = Zend_Registry::get( "appConfig" );
	               $fechaiactividades = new Zend_Date($datos_proceso["fechaiactividades"]);
	               $form_cohortes->getElement("fechaiactividades")->setValue($fechaiactividades->toString($appConfig->fecha_formato_mostrar));
 			   }
 			                  
               $form_cohortes->makeStatic($this->_readonly);
               $this->view->form_cohortes = $form_cohortes;
               
               $this->view->cohortes = $Sintesis->buscarCohortes($this->codproceso,$this->codestado);
           break;
           case "3_3_6":
           case "3_3_4":
               $datos_1 = $Sintesis->cargarSintesis($this->opcion."_1",$this->codproceso,$this->codestado);
               $datos["codsintesis1"] = $datos_1["codsintesis"];
               $datos["contenido1"]   = $datos_1["contenido"];
           break;
           case "3_3_5":
               $datos_1 = $Sintesis->cargarSintesis($this->opcion."_1",$this->codproceso,$this->codestado);
               $datos["codsintesis1"] = $datos_1["codsintesis"];
               $datos["contenido1"]   = $datos_1["contenido"];
               
               $datos_2 = $Sintesis->cargarSintesis($this->opcion."_2",$this->codproceso,$this->codestado);
               $datos["codsintesis2"] = $datos_2["codsintesis"];
               $datos["contenido2"]   = $datos_2["contenido"];

               $datos_3 = $Sintesis->cargarSintesis($this->opcion."_3",$this->codproceso,$this->codestado);
               $datos["codsintesis3"] = $datos_3["codsintesis"];
               $datos["contenido3"]   = $datos_3["contenido"];
           break;
           case "3_4_1":
                $datos_instalaciones = $Sintesis->buscarInstalacionesFisicas($this->codproceso,$this->codestado);
                $datos_instalaciones["codtab"] = $this->datos["codtab"];
		        $datos_instalaciones["codboton"] = $this->datos["codboton"];
		        $datos_instalaciones["codboton2"] = $this->datos["codboton2"];
                
                $form_instalaciones = new Solicitudes_Form_Instalaciones();
                $form_instalaciones->populate ( $datos_instalaciones );
                $form_instalaciones->makeStatic($this->_readonly);
                $this->view->form_instalaciones=$form_instalaciones;
           break;
           case "3_4_2":
               $sesionRecurso = new Zend_Session_Namespace("RECURSO");
               $sesionRecurso->subtiporecurso = 1;
               $accion = $this->_getParam("accion");
                if($accion == "modificar") {
		            $datos_recursos = $Sintesis->buscarRecurso($this->_getParam("codrecursoproceso"));
		        }
		        
                $recursos = $Sintesis->buscarRecursosproceso($this->codproceso,$this->codestado,1);
                if ($recursos) $this->view->recursos = $recursos;

                $datos_recursos["codtab"] = $this->datos["codtab"];
		        $datos_recursos["codboton"] = $this->datos["codboton"];
		        $datos_recursos["codboton2"] = $this->datos["codboton2"];
                		        
                $form_recursos = new Solicitudes_Form_Recursos();
                $form_recursos->recoverFromRedirect();
                $form_recursos->populate ( $datos_recursos );
                $form_recursos->makeStatic($this->_readonly);
                $this->view->form_recursos = $form_recursos;
           break;
           case "3_4_3":
                $accion = $this->_getParam("accion");
	            $recursos = $Sintesis->buscarRecursosproceso($this->codproceso,$this->codestado,2);
	            if ($recursos) $this->view->recursos = $recursos;

	            $sesionRecurso = new Zend_Session_Namespace("RECURSO");

                if($accion == "crear1" || $accion == "modificar1") {
                    if($accion == "modificar1") $datos_recursos = $Sintesis->buscarRecurso($this->_getParam("codrecursoproceso"));

	                $datos_recursos["codtab"] = $this->datos["codtab"];
			        $datos_recursos["codboton"] = $this->datos["codboton"];
			        $datos_recursos["codboton2"] = $this->datos["codboton2"];
			        $datos_recursos["accion"] = $accion;

			        $sesionRecurso->subtiporecurso = 2;
	                $form_recursos = new Solicitudes_Form_Recursos();
	                $form_recursos->setName("recursos");
	                $form_recursos->recoverFromRedirect();
	                $form_recursos->populate ( $datos_recursos );
	                $form_recursos->makeStatic($this->_readonly);
	                $this->view->form_recursos = $form_recursos;
                }

	            $laboratorios = $Sintesis->buscarRecursosproceso($this->codproceso,$this->codestado,3);
	            if ($laboratorios) $this->view->laboratorios = $laboratorios;

                if($accion == "crear2" || $accion == "modificar2") {
                    if ($accion == "modificar2")  $datos_laboratorio = $Sintesis->buscarRecurso($this->_getParam("codrecursoproceso"));

	                $datos_laboratorio["codtab"] = $this->datos["codtab"];
			        $datos_laboratorio["codboton"] = $this->datos["codboton"];
			        $datos_laboratorio["codboton2"] = $this->datos["codboton2"];
			        $datos_laboratorio["accion"] = $accion;

			        $sesionRecurso->subtiporecurso = 3;
	                $form_laboratorios = new Solicitudes_Form_Recursos();
	                $form_laboratorios->setName("laboratorios");
	                $form_laboratorios->recoverFromRedirect();
	                $form_laboratorios->populate ( $datos_laboratorio );
	                $form_laboratorios->setName("laboratorios");
	                $form_laboratorios->makeStatic($this->_readonly);
	                $this->view->form_laboratorios = $form_laboratorios;
                }
           break;
           case "4_1_1":
               $this->view->infoPrograma["areaconocimiento"] = $Sintesis->obtener_area_programa($this->codprograma,1);
               $this->view->infoPrograma["nucleoconocimiento"] = $Sintesis->obtener_area_programa($this->codprograma,2);
               $datos_proceso =  $Sintesis->cargardatosProceso($this->codproceso);
               $this->view->aprobardenominacion = $datos_proceso["aprobardenominacion"];
           break;
           
        }
        $sesionTabBoton = new Zend_Session_Namespace("TABBOTON");
        $sesionTabBoton->requerido = true;
        $sesionTabBoton->requerido1 = false;
        $sesionTabBoton->requerido2 = false;
        
        if (isset($datos["codsintesis"])){
          $coddocumento = $Sintesis->getcodigoAdjunto($datos["codsintesis"]);
          if ($coddocumento){
              $sesionTabBoton->requerido = false;
              $adjunto = new Generales_Model_Documentos();
              $this->view->adjunto = $adjunto->cargarDatos($coddocumento);
          }
          
          $this->view->datos = $Sintesis->getAdjuntosSintesis($datos["codsintesis"]);
       }
       
       if (in_array($this->opcion,array("2_1_1","3_3_2","3_3_4","3_3_5","3_3_7","3_3_8","3_3_9","3_3_10","3_4_1","3_4_2","3_4_3"))){
           $sesionTabBoton->requerido = false;
           if (in_array($this->opcion,array("3_3_4","3_3_5"))){
               $sesionTabBoton->requerido1 = true;
           }
           if (in_array($this->opcion,array("3_3_5"))){
               $sesionTabBoton->requerido2 = true;
           }
       }
       
       $Programa = new Solicitudes_Model_DetalleSolicitud();
   	   $codestado =  $Programa->getEstadoProceso($this->codproceso);
       if (in_array($this->opcion,array("1_1_1")) && $codestado >=Solicitudes_Model_Historicoprocesos::COMPLETITUD){
        	$Procesos = new Solicitudes_Model_DetalleSolicitud();
			$infoProceso = $Procesos->cargardatosProceso ( $this->codproceso );
        	$Solicitudes= new Solicitudes_Model_Solicitudes();
			$this->infoSolicitud = $Solicitudes->cargarDatos ( $infoProceso["codsolicitud"] );
       		if ($this->infoSolicitud["coddocumento"]){
           	  	$adjunto = new Generales_Model_Documentos();
              	$this->view->intencion = $adjunto->cargarDatos($this->infoSolicitud["coddocumento"]);
    		}
       }
       
       
       $errorsintesis = $this->_getParam("errorsintesis");
       
       $form1 = new Solicitudes_Form_Sintesis();
       if ($errorsintesis){
           $form1->recoverFromRedirect();
       }
	   $form1->populate ( $datos );
	   $form1->makeStatic($this->_readonly);
	   $this->view->form1 = $form1;
       
	   $vista = str_replace("_","",$this->opcion);
	   $this->render($vista);
	   
    }
       
    public function guardarsintesisAction(){
        $form = new Solicitudes_Form_Sintesis();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
				$datos["codsintesis"]     = $this->_getParam("codsintesis");
				$datos["contenido"]     = $this->_getParam("contenido");
				$datos["codigointerno"] =  $this->opcion;
				$datos["codproceso"]    =  $this->codproceso;
				$datos["codestado"]    =  $this->codestado;
				$codsintesis = $detalleSolicitud->guardarSintesis($datos);
				switch($this->opcion){
                    case "3_3_6":
				    case "3_3_4":
                           $datos["codsintesis"]   = $this->_getParam("codsintesis1");
                           $datos["contenido"]     = $this->_getParam("contenido1");
                           $datos["codigointerno"] = $this->opcion."_1";
                           $detalleSolicitud->guardarSintesis($datos);
                       break;
                       case "3_3_5":
                           $datos["codsintesis"]   = $this->_getParam("codsintesis1");
                           $datos["contenido"]     = $this->_getParam("contenido1");
                           $datos["codigointerno"] = $this->opcion."_1";
                           $detalleSolicitud->guardarSintesis($datos);
                           
                           $datos["codsintesis"]   = $this->_getParam("codsintesis2");
                           $datos["contenido"]     = $this->_getParam("contenido2");
                           $datos["codigointerno"] = $this->opcion."_2";
                           $detalleSolicitud->guardarSintesis($datos);

                           $datos["codsintesis"]   = $this->_getParam("codsintesis3");
                           $datos["contenido"]     = $this->_getParam("contenido3");
                           $datos["codigointerno"] = $this->opcion."_3";
                           $detalleSolicitud->guardarSintesis($datos);
                       break;
				}
				
				if(!in_array($this->opcion,array("2_1_1","3_3_1"))){
					$datos_adj = $form->archivo->getFileInfo();
					if (!empty($datos_adj["archivo"]["name"])) {
					    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
					    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
	                    $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
					    
					    if ($form->archivo->receive()&& !empty($datos_adj["archivo"]["name"])) {
					         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
					         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
					         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
					         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
					         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
							 $datos_archivo["codsintesis"]  = $codsintesis;
						     if (in_array($this->opcion,array("1_1_1"))){
						         $coddocumento = $detalleSolicitud->getcodigoAdjunto($datos_archivo["codsintesis"]);
						         if ($coddocumento){
						             $detalleSolicitud->eliminarAdjuntoSintesis($coddocumento);
						         }
							 }
							 $detalleSolicitud->guardarAdjuntoSintesis($datos_archivo);
					    }
					}
				}
				$detalleSolicitud->actualizarCompletitud($codsintesis);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
				echo $e->getMessage();
			}
		    
        } else {
            $form->setStateRedirect();
            $this->parametros["errorsintesis"]=true;
        }
        $this->_helper->redirector("index",null,null,App_Util_SafeUrl::encriptar($this->parametros,false));
	}
	
  public function guardaradjuntoAction(){
        $form = new Solicitudes_Form_Adjuntos();
        if($this->getRequest()->isPost()){
   		    if($form->isValid($this->getRequest()->getPost())) {
				try {
				    $datos_adj = $form->archivo->getFileInfo();
				    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
				    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
                    $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
				    
				    if ($form->archivo->receive()) {
					    $SintesisTable = new Solicitudes_Model_DetalleSolicitud();
				         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
				         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
				         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
				         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
				         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
						 $datos_archivo["codsintesis"]  = $this->_getParam("codsintesis");
					     if (in_array($this->opcion,array("1_1_1"))){
					         $coddocumento = $SintesisTable->getcodigoAdjunto($datos_archivo["codsintesis"]);
					         if ($coddocumento){
					             $SintesisTable->eliminarAdjuntoSintesis($coddocumento);
					         }
						 }
						 $SintesisTable->guardarAdjuntoSintesis($datos_archivo);
						 $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
						 $detalleSolicitud->actualizarCompletitud($this->_getParam("codsintesis"));
						 $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				    }
                } catch (Exception $e) {
					$this->view->priorityMessenger($e->getMessage(), "error");
				}
		    }else{
		    }
        }
		$this->_helper->redirector("index","infoprograma","solicitudes",App_Util_SafeUrl::encriptar($this->parametros,false));
	}
	
  public function eliminaradjuntoAction(){
      $coddocumento = $this->_getParam("coddocumento");
  	      try {
			  $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
			  $detalleSolicitud->eliminarAdjuntoSintesis($coddocumento);
			  $detalleSolicitud->actualizarCompletitud($this->_getParam("codsintesis"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		$this->_helper->redirector("index","infoprograma","solicitudes",App_Util_SafeUrl::encriptar($this->parametros,false));
	}

    public function guardarinstalacionesAction() {
        $form = new Solicitudes_Form_Instalaciones();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $detalleSolicitud->eliminarInstalacionesFisicas($this->codproceso,$this->codestado);
                $datos = $this->getRequest()->getPost();
                unset($datos["codtab"]);
                unset($datos["codboton"]);
                unset($datos["codboton2"]);
                unset($datos["btnSubmit"]);
                
                $datos_insert["codproceso"] = $this->codproceso;
                $datos_insert["codestado"] = $this->codestado;
                foreach($datos as $key =>$value){
                    if (substr($key,0,4)!="suma"){
	                    list($campo,$codinstalacion,$tipotenecia) = explode("_",$key);
	                    $datos_insert[$campo] = $value;
	                    if ($campo=="area"){
	                        $datos_insert["codinstalacion"] = $codinstalacion;
	                        $datos_insert["tipotenencia"] = $tipotenecia;
	                        $detalleSolicitud->guardarInstalacionesFisicas($datos_insert);
	                    }
                    }
                    
                    if (in_array(substr($key,0,11), array("cantidad_30","cantidad_31"))){
	                    list($campo,$codinstalacion,$tipotenecia) = explode("_",$key);
	                    $datos_insert[$campo] = $value;
	                    if ($campo=="cantidad"){
	                        $datos_insert["codinstalacion"] = $codinstalacion;
	                        $datos_insert["tipotenencia"] = $tipotenecia;
	                        $detalleSolicitud->guardarInstalacionesFisicas($datos_insert);
	                    }
                    }
                }
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            foreach($form->getMessages() as $key => $value) {
                $this->view->priorityMessenger("{$form->getElement($key)->getLabel()} " . array_shift($value), "error");
            }
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }

    public function guardarrecursosAction() {
        $form = new Solicitudes_Form_Recursos();
        $accion = $this->_getParam("accion");
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
	            $domConfig = Zend_Registry::get('domConfig');
	            $error = false;
	            
	        	if ($this->opcion=="3_4_2")
	                $array_recursos = $domConfig->RECURSOS_BIBLIOGRAFICO->toArray();
	            else
	        	    $array_recursos = $domConfig->RECURSOS_LOGISTICO->toArray();
	        	    
		        $otrorecurso = $form->getValue("otrorecurso");
	        	if(!empty($otrorecurso) && in_array($otrorecurso,$array_recursos)) {
					$form->getElement("otrorecurso")->addError("El nombre debe ser diferente a los ya establecidos");
				    $error = true;
		        }

            	$array_unidades = $domConfig->UNIDAD_ACADEMICA->toArray();
		        $otraunidad = $form->getValue("otraunidad");
	        	if(!empty($otraunidad) && in_array($otraunidad,$array_unidades)) {
					$form->getElement("otraunidad")->addError("El nombre debe ser diferente a los ya establecidos");
				    $error = true;
		        }
		        if ($error){
		            $form->setStateRedirect();
	                if(!empty($accion)){
                        $this->parametros["accion"] = $accion;
                    }
                  
			    } else {
	                $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
	                $datos["codrecursoproceso"]  = $this->_getParam("codrecursoproceso");
	                $datos["codproceso"]  = $this->codproceso;
	                $datos["codestado"]  = $this->codestado;
	                $datos["subtiporecurso"]  = $this->_getParam("subtiporecurso");
	                $datos["nombrerecurso"]   = $this->_getParam("nombrerecurso");
	                $datos["tiporecurso"]     = $this->_getParam("tiporecurso");
	                $datos["cantidad"]        = $this->_getParam("cantidad");
	                $datos["ubicacion"]       = $this->_getParam("ubicacion");
	                $datos["descripcion"]     = $this->_getParam("descripcion");
	                $datos["tipounidadacademica"]     = $this->_getParam("tipounidadacademica");
	                $datos["otrorecurso"] = ($datos["tiporecurso"]==8)?$this->_getParam("otrorecurso"):NULL;
	                $datos["otraunidad"] = ($datos["tipounidadacademica"]==3)?$this->_getParam("otraunidad"):NULL;
	                $detalleSolicitud->guardarRecursosproceso($datos);
	                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			    }
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            if(!empty($accion)){
                $this->parametros["accion"] = $accion;
            }
//            foreach($form->getMessages() as $key => $value) {
//                $this->view->priorityMessenger("{$form->getElement($key)->getLabel()} " . array_shift($value), "error");
//            }
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
   public function eliminarrecursoAction() {
        $codrecursoies = $this->_getParam("codrecursoies");
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $detalleSolicitud->eliminarRecurso($codrecursoies);
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }

    public function guardardocentesAction() {
        $form = new Solicitudes_Form_Docentes();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
//                $error = false;
//
//	            	$ano = $form->getValue("ano");
//		        	if($ano < 1900) {
//						$form->getElement("ano")->addError("El año debe ser un valor mayor de 1900");
//					    $error = true;
//			        }
//
//                if ($error){
//                    $form->setStateRedirect();
//                    $this->parametros["errordocentes"]=true;
//                }else{
	                $detalleSolicitud->eliminarDocentes($this->codproceso,$this->codestado);
	                $datos = $this->getRequest()->getPost();
	                unset($datos["codtab"]);
	                unset($datos["codboton"]);
	                unset($datos["codboton2"]);
	                unset($datos["btnSubmit"]);
	                
	                $datos_insert["codproceso"] = $this->codproceso;
	                $datos_insert["codestado"] = $this->codestado;
	                
	                $datos = $detalleSolicitud->CrearAnosPeriodos($datos);
	                
	                foreach($datos as $key =>$value){
	                    if (substr($key,0,8)=="cantidad"){
		                    list($campo,$numeroano,$periodo,$tipodedicacion,$tiponivel) = explode("_",$key);
		                    $datos_insert[$campo] = $value;
		                    $datos_insert["numeroano"] = $numeroano;
		                    $datos_insert["ano"] = $datos["ano_{$numeroano}_{$periodo}"];
		                    $datos_insert["periodo"] = $datos["periodo_{$numeroano}_{$periodo}"];
		                    $datos_insert["tipodedicacion"] = $tipodedicacion;
		                    $datos_insert["tiponivel"] = $tiponivel;
	                        $detalleSolicitud->guardarDocentes($datos_insert);
	                    }
	                }
	                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
//                }
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errordocentes"]=true;
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
   public function guardardocentesvisitaAction() {
        $form = new Solicitudes_Form_Docentesvisita();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $datos["codproceso"] = $this->codproceso;
                $datos["codestado"] = $this->codestado;
                
                $detalleSolicitud->guardarDocentesVisita($datos);
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errordocentesvisita"]=true;
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
   public function eliminardocentevistaAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $detalleSolicitud->eliminarDocentesVisita($this->_getParam("coddocentevisita"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
    public function guardarestudiantesAction() {
        $form = new Solicitudes_Form_Estudiantes();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $detalleSolicitud->eliminarEstudiantes($this->codproceso,$this->codestado);
                $datos = $this->getRequest()->getPost();

                $datos_insert["codproceso"] = $this->codproceso;
                $datos_insert["codestado"] = $this->codestado;
                
                $datos = $detalleSolicitud->CrearAnosPeriodos($datos);
                
                foreach($datos as $key =>$value){
                    if (substr($key,0,8)=="cantidad"){
	                    list($campo,$numeroano,$periodo,$tipoestudiante) = explode("_",$key);
	                    $datos_insert[$campo] = $value;
	                    $datos_insert["numeroano"] = $numeroano;
	                    $datos_insert["ano"] = $datos["ano_{$numeroano}_{$periodo}"];
	                    $datos_insert["periodo"] = $datos["periodo_{$numeroano}_{$periodo}"];
	                    $datos_insert["tipoestudiante"] = $tipoestudiante;
                        $detalleSolicitud->guardarEstudiantes($datos_insert);
                    }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errorestudiantes"]=true;
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }

   public function guardarcohorteAction() {
        $form = new Solicitudes_Form_Cohortes();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $datos["codproceso"] = $this->codproceso;
                $datos["codestado"] = $this->codestado;
                
                $detalleSolicitud->guardarCohorte($datos);
                
                $datosp["codproceso"] = $this->codproceso;
                $datosp["fechaiactividades"] = $datos["fechaiactividades"];
                $detalleSolicitud->guardardatosProceso($datosp);
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errorcohortes"]=true;
//            foreach($form->getMessages() as $key => $value) {
//                $this->view->priorityMessenger("{$form->getElement($key)->getLabel()} " . array_shift($value), "error");
//            }
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
   public function eliminarcohorteAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $detalleSolicitud->eliminarCohorte($this->_getParam("codcohorte"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($this->parametros, false));
    }
    
	public function guardaraceptaciondenominacionAction() { //con informe de consejero
		
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
		
	    if( $this->getRequest()->isPost() ) {
	        $aprobar = $this->_getParam("aprobar");
			
			try {
			    $datos=array();
                $datosp["codproceso"] = $this->codproceso;
                $datosp["aprobardenominacion"] = $aprobar;
                $detalleSolicitud->guardardatosProceso($datosp);
				
			    $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
		}
		$this->_helper->redirector("index",null,null,App_Util_SafeUrl::encriptar(array("codtab"=>"4","codboton"=>"1","codboton2"=>"1"),false));
	}
	
   public function descargarexcelAction() {
       $Sintesis  = new Solicitudes_Model_DetalleSolicitud();
       $opcion = $this->_getParam("opcion");
       
       switch($opcion){
           case "1":
       
               $datos_docentes = $Sintesis->buscarDocentes($this->codproceso,$this->codestado);
               if ($datos_docentes){
                   $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
                   $datos_docentes["periodo"]= $datos_docentes["periodo_1_1"];


	               if ($datos_docentes["ano_1_1"]==$datos_docentes["ano_1_2"]){
		               $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
		               $datos_docentes["periodo"]= $datos_docentes["periodo_1_2"];
	               }
               }
               $datos_docentes["codtab"] = $this->datos["codtab"];
	           $datos_docentes["codboton"] = $this->datos["codboton"];
			   $datos_docentes["codboton2"] = $this->datos["codboton2"];
			   $html = $Sintesis->armarhtmldocentes($datos_docentes);
			   $titulo = "Docentes";
		  break;
           case "2":
               $datos_estudiantes = $Sintesis->buscarEstudiantes($this->codproceso,$this->codestado);
//               Zend_Debug::dump($datos_estudiantes);
               $datos_estudiantes["ano"]= 0;
               $datos_estudiantes["periodo"]= 0;
               
               if (isset($datos_estudiantes["ano_1_1"])){
                   $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
                   $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_1"];
               }
               
               if (isset($datos_estudiantes["ano_1_1"]) && $datos_estudiantes["ano_1_1"]==$datos_estudiantes["ano_1_2"]){
	               $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
	               $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_2"];
               }
			   $html = $Sintesis->armarhtmlestudiantes($datos_estudiantes);
			   $titulo = "Estudiantes";
		  break;
           case "3":
               $datos_instalaciones = $Sintesis->buscarInstalacionesFisicas($this->codproceso,$this->codestado);
			   $html = $Sintesis->armarhtmlinstalaciones($datos_instalaciones);
			   $titulo = "Instalaciones fisicas";
		  break;
       }

		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		$this->getResponse()->clearBody();
		$this->getResponse()->clearAllHeaders();
	    header("Content-type: application/msword");
        header("Content-Disposition: attachment; filename={$titulo}.xls" );
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
        header("Pragma: public");
        print $html;
    }
}

